
import 'dart:convert';
import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:path_provider/path_provider.dart';

/// json缓存
class JsonCacheStorage {

  /// 获取缓存目录
  static Future<Directory> _getCacheDir() async {
    if (kIsWeb) {
      throw UnsupportedError("Web 平台不支持本地文件存储");
    }
    return await getApplicationCacheDirectory();
  }

  /// 构建完整路径
  static Future<String> _filePath(String key) async {
    final dir = await _getCacheDir();
    return '${dir.path}/$key.json';
  }

  /// 写入 JSON 对象（Map/List）
  static Future<void> saveJson(String key, Object jsonObject) async {
    final path = await _filePath(key);
    final file = File(path);
    final jsonStr = json.encode(jsonObject);
    await file.writeAsString(jsonStr);
  }

  /// 读取 JSON 对象（返回 Map 或 List）
  static Future<dynamic> readJson(String key) async {
    final path = await _filePath(key);
    final file = File(path);
    if (await file.exists()) {
      final jsonStr = await file.readAsString();
      return json.decode(jsonStr);
    }
    return null;
  }

  /// 删除缓存
  static Future<void> remove(String key) async {
    final path = await _filePath(key);
    final file = File(path);
    if (await file.exists()) {
      await file.delete();
    }
  }

  /// 判断是否存在缓存
  static Future<bool> exists(String key) async {
    final path = await _filePath(key);
    return File(path).exists();
  }

  /// 获取完整路径（调试用）
  static Future<String> getPath(String key) async {
    return _filePath(key);
  }
}